package com.learn.springboot3;


import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.junit.jupiter.api.Test;

import javax.crypto.SecretKey;
import java.nio.charset.StandardCharsets;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

/**
 * ClassName: test5
 * Package: com.learn.springboot3
 * Description:
 *
 * @Author jiangCheng
 * @Create 2024/10/22 9:54
 * @Version 1.0
 */
public class test5 {
    /**
     * 生成JWT
     */


    public static void main(String[] args)  {
        // 生成JWT
        // 示例：使用 256 位 (32 字节) 的密钥
        byte[] secretKeyBytes = "your_secret_key_32_bytes!".getBytes(StandardCharsets.UTF_8);

        JwtBuilder builder = Jwts.builder();
        String token = builder
                // 头部
                .setHeaderParam("typ", "JWT")
                .setHeaderParam("alg", "HS256")
                // 载荷数据
                .claim("id", 10001)
                .claim("nickName", "老王")
                // 设置过期时间
                .setExpiration(new Date(System.currentTimeMillis() + 1000 * 60 * 60))
                // 设置JWT的唯一标识（ID）
                .setId(UUID.randomUUID().toString())
                // 签名，使用HS256算法和指定的密钥进行签名
                .signWith(SignatureAlgorithm.HS256, secretKeyBytes)
                // 构造JWT令牌
                .compact();

        System.out.println("Generated JWT: " + token);

    }}